package us.proyecto.canarios.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import us.proyecto.canarios.domain.Anio;
import us.proyecto.canarios.domain.Premio;
import us.proyecto.canarios.domain.Puntuacion;
import us.proyecto.canarios.domain.Tipo;

@Name("diccionariosDAO")
@Scope(ScopeType.SESSION)
public class DiccionarioDAO {

    @In
    EntityManager em;

    public DiccionarioDAO() {

    }

    public List<Tipo> getListaTipos(){
    	return em.createQuery("from Tipo").getResultList();
    }

    public List<Premio> getListaPremios(){
    	return em.createQuery("from Premio").getResultList();
    }

    @Begin(join = true, flushMode = FlushModeType.MANUAL)
    public boolean guardarTipo(Tipo usu) {
        boolean correcto;

        try {
            em.persist(usu);
            em.flush();
            correcto = true;
        } catch (RuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            correcto = false;
        }
        return correcto;

    }

    @Begin(join = true, flushMode = FlushModeType.MANUAL)
    public boolean guardarPremio(Premio usu) {
        boolean correcto;

        try {
            em.persist(usu);
            em.flush();
            correcto = true;
        } catch (RuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            correcto = false;
        }
        return correcto;

    }

    public List<Anio> getListaAnios(){
        return em.createQuery("select a from Anio a order by a.anio").getResultList();
    }

	public Premio getPremioById(String string) {
		try{
		return (Premio) em.createQuery("").getSingleResult();
		}catch (NoResultException e) {
			return null;
		}
		
	}
	
	public List<Premio> getListaPremiosTipo(Tipo pun){
    	return em.createQuery("from Premio where tipo.idTipo = " + pun.getIdTipo()).getResultList();
    }
}
